pub fn goldbach_conjecture() -> u64 {
    let mut prime_set = vec![2, 3];
    let mut squre_sum_set: Vec<u64> = vec![2, 8, 18];
    let mut res = 0;
    for e in (5..u64::MAX).step_by(2) {
        // 构造质数集
        let upper_bound = (e as f64).sqrt().ceil() as u64;
        let _is_not_prime = prime_set
            .iter()
            .skip(1)
            .filter(|&&p| p <= upper_bound)
            .any(|&prime| e % prime == 0);
        if !_is_not_prime {
            prime_set.push(e);
            continue;
        }

        // 构造(2*平方和)集
        let mut _t = *squre_sum_set.last().unwrap();
        while _t < e {
            _t = (squre_sum_set.len().pow(2) * 2).try_into().unwrap();
            squre_sum_set.push(_t);
        }

        let mut flag = false;
        for &s in squre_sum_set.iter().rev().skip(1) {
            let minus = e - s;
            if prime_set.contains(&minus) {
                flag = true;
                break;
            }
        }

        if !flag {
            if res != 0 {
                return res + e;
            }
            res += e;
        }
    }
    unreachable!()
}
